package com.gcxy.common.config.exception.exception;



import com.gcxy.common.config.exception.annotation.GlobalException;
import lombok.extern.slf4j.Slf4j;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * @author shinetan
 * @since 0.1.0
 */
// 标记该类使用Log4j2进行日志记录
@Slf4j
// 标记该类为全局异常处理器，优先级为0（最高优先级）
@GlobalException(priority = 0)
public class GlobalExceptionProcess implements IGlobalException<Object, Throwable> {

    /**
     * 处理全局异常的方法
     * @param throwable 抛出的异常对象
     * @param request HTTP请求对象
     * @param response HTTP响应对象
     * @return 返回处理异常后的响应结果
     */
    @Override
    public Object exception(Throwable throwable, HttpServletRequest request, HttpServletResponse response) {
        // 记录错误日志，包含异常信息和请求的URI
        log.error("UnKnown exception: url={}", request.getRequestURI(), throwable);
        // 返回一个JSON格式的字符串，表示系统异常
        return "{\"success\":false, \"code\":100500, \"message\":\"系统异常\"}";
    }
}